package com.dsg.entity.apply;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 個人申請資料
 * </p>
 *
 * @author system
 * @since 2020-07-04
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("dsg_apply_cus")
@ApiModel(value = "DsgApplyCus对象", description = "個人申請資料")
public class DsgApplyCus implements Serializable {

    private static final long serialVersionUID = 1L;

    /**錄入*/
    public static final Integer CUS_STATUS_0 = 0;
    /**生效中*/
    public static final Integer CUS_STATUS_1 = 1;
    /**暫停*/
    public static final Integer CUS_STATUS_2 = 2;
    /**取消*/
    public static final Integer CUS_STATUS_3 = 3;

    @ApiModelProperty(value = "通訊地址/聯絡人")
    @TableField(exist = false)
    private List<DsgApplyContact> contactList;

    @ApiModelProperty(value = "主鍵")
    @TableId("OID")
    private String oid;

    @ApiModelProperty(value = "申請單號")
    @TableField("MAIN_NO")
    private String mainNo;

    @ApiModelProperty(value = "申请单号")
    @TableField("APP_NO")
    private String appNo;

    @ApiModelProperty(value = "客戶類型")
    @TableField("CUS_TYPE")
    private String cusType;

    @ApiModelProperty(value = "是否在黑名單列表")
    @TableField("BLACK_LIST")
    private Integer blackList;

    @ApiModelProperty(value = "中文名")
    @TableField("CN_NAME")
    private String cnName;

    @ApiModelProperty(value = "英文名")
    @TableField("EN_NAME")
    private String enName;

    @ApiModelProperty(value = "性別")
    @TableField("SEX")
    private Integer sex;

    @ApiModelProperty(value = "語言")
    @TableField("LANGUAGE")
    private String language;

    @ApiModelProperty(value = "身份證號")
    @TableField("ID_NO")
    private String idNo;

    @ApiModelProperty(value = "籍貫")
    @TableField("NATIVE")
    private Integer natIve;

    @ApiModelProperty(value = "出生日期")
    @TableField("BIRTH_DATE")
    private Date birthDate;

    @ApiModelProperty(value = "電郵")
    @TableField("E_MAIL")
    private String eMail;

    @ApiModelProperty(value = "移動電話")
    @TableField("MOBILE_PHONE")
    private String mobilePhone;

    @ApiModelProperty(value = "固定電話")
    @TableField("TEL_PHONE")
    private String telPhone;

    @ApiModelProperty(value = "傳真")
    @TableField("FAX")
    private String fax;

    @ApiModelProperty(value = "通訊地址")
    @TableField("ADDR")
    private String addr;


    /**
     * 创建人
     */
    @TableField(value = "CREATER")
    @ApiModelProperty(value = "创建人", name = "creater")
    private String creater;

    /**
     * 创建时间
     */
    @TableField(value = "CREATE_TIME")
    @ApiModelProperty(value = "创建时间", name = "createTime")
    private Date createTime;

    /**
     * 更新人
     */
    @TableField(value = "UPDATER")
    @ApiModelProperty(value = "更新人", name = "updater")
    private String updater;

    /**
     * 更新时间
     */
    @TableField(value = "UPDATE_TIME")
    @ApiModelProperty(value = "更新时间", name = "updateTime")
    private Date updateTime;

    @ApiModelProperty(value = "客戶狀態")
    @TableField("CUS_STATUS")
    private Integer cusStatus;

    /**
     * 生效日期
     */
    @TableField(value = "EFF_DATE")
    @ApiModelProperty(value = "生效日期", name = "effDate")
    private Date effDate;

    /**
     * 失效日期
     */
    @TableField(value = "EXP_DATE")
    @ApiModelProperty(value = "失效日期", name = "expDate")
    private Date expDate;

    /**
     * 企業編號
     */
    @TableField(value = "ENT_CODE")
    @ApiModelProperty(value = "企業編號", name = "entCode")
    private String entCode;

    /**
     * 客户编号
     */
    @TableField(value = "CUS_NO")
    @ApiModelProperty(value = "客户编号", name = "cusNo")
    private String cusNo;

    @ApiModelProperty(value = "核对状态")
    @TableField("VERIFY")
    private Integer verify;

    /************************枚舉**********************/
    public enum AppStatus {
        input(0), inForce(1), pause(2), cancel(3);
        Integer code;

        AppStatus(int code) {
            this.code = code;
        }

        public Integer getCode() {
            return code;
        }
    }

    /** 未核对 */
    public static final Integer VERIFY_NO = 0;
    /** 完成核对 */
    public static final Integer VERIFY_YES = 1;
}
